package com.wl.mapper;

import com.wl.pojo.Articles;
import com.wl.pojo.model.ArticleManagement;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @program: treeHole
 * @author: 吴磊
 * @create: 2021-07-06 18:12
 */
public interface ArticlesMapper {
    /**
     * 根据Id的set集合获取文章
     *
     * @param list
     * @return
     */
    List<Articles> getArticleByIdList(List<String> list);


    /**
     * 所有文章数量
     *
     * @return
     */

    Integer getAllArticleCount();

    /**
     * 根据页数获取文章
     *
     * @return
     */
    List<ArticleManagement> getAllArticle(@Param("start") int start);

    /**
     * 通过类型获取全部文章（分页）
     *
     * @param map
     * @return
     */
    List<Articles> getOwnerArticleByType(Map<String, Object> map);

    /**
     * 通过类型获取全部文章数量
     *
     * @param map
     * @return
     */
    Integer getOwnerArticleByTypeCount(Map<String, Object> map);

    /**
     * 根据标签找到相同标签的文章并分页
     *
     * @param map
     * @return
     */
    List<Articles> getArticleByLabel(Map<String, Object> map);


    /**
     * 通过文章Id更新文章Id
     *
     * @param articles
     * @return
     */
    Integer updateArticleById(Articles articles);


    /**
     * 插入文章
     *
     * @param articles
     * @return
     */
    Integer insert(Articles articles);

    /**
     * 插入文章通过爬取数据
     *
     * @param articles
     * @return
     */
    Integer insertByJsoup(Articles articles);

    /**
     * 删除文章
     *
     * @param articles
     * @return
     */
    Integer delete(Articles articles);

    /**
     * 通过文章Id获取文章
     *
     * @param articleId
     * @return
     */
    Articles getArticleById(@Param("articleId") String articleId);


    /**
     * 获取指定页数文章
     *
     * @param map
     * @return
     */
    List<Articles> getArticleBySome(Map<String, Object> map);

    /**
     * 根据时间获取所有文章
     *
     * @param map
     * @return
     */
    List<Articles> getArticleByListId(Map<String, Object> map);

    /**
     * 获取用户自己的文章数量
     *
     * @param map
     * @return
     */
    Integer getArticleByUseridAndStatusCount(Map<String, Object> map);

    /**
     * 获取用户自己的文章分页
     *
     * @param map
     * @return
     */
    List<Articles> getArticleByPage(Map<String, Object> map);

    /**
     * 获取最新文章
     *
     * @return
     */
    Integer getArticleByTime();

    /**
     * 获取最新文章分页
     *
     * @return
     */
    List<Articles> getArticleByTimeAndPage(Integer start);
}
